home *** CD-ROM | disk | FTP | other *** search
- package Local.Game.Thing
- {
- import Local.Game.World.*;
- import Local.Game.World.Map.*;
- import Local.Game.World.Map.Cell.*;
- import Local.Math.*;
- import STC9.System.*;
- import flash.display.*;
- import flash.events.*;
- import flash.geom.*;
-
- public class CShotTomahawk extends CShot
- {
-
-
- private var mPath:CPath;
-
- private var mImpactDistance:Number;
-
- private var mFlare:CThingAnimation;
-
- private var mExplode:Boolean;
-
- public function CShotTomahawk(param1:CPosition, param2:*)
- {
- param1.x = -400;
- param1.y = 100;
- super(param1);
- mType = "tomahawk";
- Process = Process_Normal;
- mAngle = new CAngle();
- mDelta = new CPosition();
- mMaxLife = mLife = 100;
- mMaxSpeed = 250 * mSpriteScalar;
- mSpeed = 0;
- mAcceleration = 10;
- mOrientation = 1;
- mShowOnMap = true;
- mTargetAirbourne = true;
- AddAnimation("stand",Tomahawk,"AddSprite_Black");
- SetCollisionBySprite(mAnimation[0]);
- AddThing(mFlare = new CThingAnimation(Tomahawk_Flare,"AddSprite_Scale"));
- mTarget = param2 is CPosition ? param2 : param2.mPosition;
- SetState("GOTOTARGET");
- IncrementFired();
- }
-
- public function State_GOTOTARGET_Exit() : void
- {
- }
-
- public function State_FOLLOWPATH_Enter() : void
- {
- if(true)
- {
- mPath = new CPath();
- if(true)
- {
- §§push(mPath);
- if(true)
- {
- §§pop().SetPath([mPosition,new Point((mPosition.x + mTarget.x) / 2,mPosition.y),mTarget]);
- addr49:
- §§push(mPath);
- }
- §§pop().OrientateThing(this);
- §§goto(addr52);
- }
- §§goto(addr49);
- }
- addr52:
- }
-
- public function State_FOLLOWPATH_Exit() : void
- {
- }
-
- public function State_NOPATH() : void
- {
- if(true)
- {
- mDelta = CPosition.NORMALIZE(mAngle.mDelta,mSpeed);
- mPosition.Add(mDelta);
- }
- }
-
- public function State_GOTOTARGET() : void
- {
- mDelta = CPosition.NORMALIZE(mAngle.mDelta,mSpeed);
- mPosition.Add(mDelta);
- if(Math.abs(mPosition.x - mTarget.x) < Math.abs(mPosition.y - mTarget.y) * 4)
- {
- SetState("FOLLOWPATH");
- }
- }
-
- public function CreateExplosion() : void
- {
- Explode();
- AddThing(new CEffectExplosionMedium(mPosition,250));
- mDead = true;
- DispatchDispose();
- }
-
- override public function Draw() : void
- {
- var _loc1_:Matrix = null;
- var _loc2_:Point = null;
- if(true)
- {
- super.Draw();
- DrawTrail(4,150);
- }
- _loc1_ = GetOrientationMatrix();
- if(true)
- {
- DrawSprite(_loc1_);
- }
- _loc2_ = _loc1_.transformPoint(mSprite.mObjects["flare"].mPosition);
- mFlare.mPosition.SetXY(_loc2_.x + mPosition.x,_loc2_.y + mPosition.y);
- mFlare.mAngle.Copy(mAngle);
- mFlare.Draw();
- }
-
- public function Process_Normal() : void
- {
- var _loc1_:Point = null;
- Accelerate_Speed();
- if(Process_State != null)
- {
- Process_State();
- }
- if(mDisposed)
- {
- return;
- }
- mCollide.Update();
- if(MapMoveTrail())
- {
- if(Process_ReachedObjective())
- {
- return;
- }
- }
- Process_Children();
- _loc1_ = OrientatePoint(mSprite.mObjects["payload"].mPosition.clone(),mPosition);
- if(true)
- {
- if(_loc1_.y >= mLandscape.GetAltitude(_loc1_.x))
- {
- if(true)
- {
- mPosition.SetXY(_loc1_.x,mLandscape.GetAltitude(_loc1_.x));
- if(true)
- {
- §§goto(addr72);
- }
- §§goto(addr81);
- }
- §§goto(addr91);
- }
- addr72:
- §§push(mExplode);
- if(true)
- {
- §§push(§§pop());
- if(true)
- {
- if(§§pop())
- {
- }
- §§goto(addr90);
- }
- §§pop();
- addr81:
- §§push(mDead);
- }
- addr90:
- if(§§pop())
- {
- addr91:
- CreateExplosion();
- §§goto(addr93);
- }
- addr93:
- return;
- }
- §§goto(addr91);
- }
-
- public function State_GOTOTARGET_Enter() : void
- {
- }
-
- public function State_NOPATH_Exit() : void
- {
- }
-
- public function State_NOPATH_Enter() : void
- {
- }
-
- public function State_FOLLOWPATH() : void
- {
- var _loc1_:* = false;
- var _loc2_:Number = NaN;
- §§push(Math.abs(mTarget.x - mPosition.x) <= mSpeed);
- if(true)
- {
- _loc1_ = §§pop();
- §§push(_loc1_);
- if(true)
- {
- _loc2_ = !!§§pop() ? mTarget.x - mPosition.x : mSpeed;
- §§goto(addr68);
- }
- §§goto(addr52);
- }
- addr68:
- §§push(mPath);
- if(true)
- {
- addr52:
- if(!§§pop().MoveAlong(_loc2_))
- {
- mExplode = true;
- return;
- }
- §§push(mPath);
- }
- §§pop().OrientateThing(this);
- if(_loc1_)
- {
- mExplode = true;
- }
- }
- }
- }
-